﻿using System;
using System.Reflection;
using System.Data;

namespace TidyBlog.Data.Mapping
{
    /// <summary>
    /// 数据列特性
    /// </summary>
    public class ColumnAttribute : Attribute
    {
        /// <summary>
        /// 列名
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 创建记录时是否由数据库生成此字段的值
        /// </summary>
        public bool IsDbGenerated { get; set; }
        /// <summary>
        /// 是否主键
        /// </summary>
        public bool IsPrimaryKey { get; set; }
        /// <summary>
        /// 数据类型
        /// </summary>
        public DbType DataType { get; set; }
        /// <summary>
        /// 长度，0为不限制长度，默认为0
        /// </summary>
        public int Length { get; set; }
        /// <summary>
        /// 更新时是否不更新此列，默认为False
        /// </summary>
        public bool IsUpdateIgnore { get; set; }
        /// <summary>
        /// 列表时是否不读取此字段，默认为False
        /// </summary>
        public bool IsListIgnore { get; set; }
        /// <summary>
        /// 排序次序（最多支持255个字段排序），0为不使用此字段排序，默认为0
        /// </summary>
        public byte OrderBy { get; set; }
        /// <summary>
        /// 排序方式，0为顺序，1为反序
        /// </summary>
        public byte OrderWay { get; set; }
        /// <summary>
        /// 获取或设置对应实体类的属性名
        /// </summary>
        public string EntityPropertyName { get; set; }


        public ColumnAttribute()
        {
            Length = 0;
            OrderBy = 0;
            IsUpdateIgnore = false;
            IsListIgnore = false;
        }
    }
}
